#!/usr/bin/env python3


'''
1. 基本数据类型：
    布尔整浮点，空值字符串。 即: bool, int, float, NoneType, str。
2. 复合数据类型(容器类型)
    小元中列大字典，集合字节皆可变。
    * tuple — 元组 
        * 有序、可重，不可变
        * 用圆括号 () 定义（或省略括号）
        * 示例：(1, "a", True), 1, 2, 3
        * 常用于返回多个值、作为字典键（因不可变）
    * list — 列表
        * 有序、可重, 可变
        * 用方括号 [] 定义
        * 示例：[1, "a", True]
        * 支持索引、切片、增删改
    * dict — 字典
        * 无序（Python 3.7+ 保持插入顺序）、键唯一、可变
        * 键值对集合，键必须是不可变类型
        * 用花括号 {} 定义
        * 示例：{"name": "Alice", "age": 30}
    * set — 集合
        * 无序、元素唯一、可变
        * 用于去重、成员测试、集合运算（交、并、差）
        * 用 set() 或 {}（非空）定义
        * 示例：{1, 2, 3}, set([1, 2, 2]) → {1, 2}
        * 注意：{} 创建的是空字典，空集合需用 set()        
    * 区分说明
        * 空集合只能用 set()，{} 是字典。
        * 圆括号 ()：有逗号是元组，没逗号是普通括号
            元组: (), (1,), (1,2)
            整数: (1)
            集合: set()
        * 花括号 {}：有冒号是字典，没冒号是集合
            字典: {}, {"a": 1}
            集合: {1, 2, "a"} ，在非空的{}中，如果有冒号，则是字典，如果无冒号，则是集合。
3. 其他重要类型
    * frozenset — 不可变集合
        * 类似 set，但不可变，可作为字典键
        * 示例：frozenset([1, 2, 3])
    * bytes — 字节序列
        * 不可变的 8 位字节序列（0~255）
        * 用于处理二进制数据
        * 示例：b"hello", bytes([65, 66])
    * bytearray — 可变字节序列
        * 类似 bytes，但可变
    * range — 整数范围
        * 表示一个不可变的数字序列（惰性生成）
        * 示例：range(5) → 0,1,2,3,4
* 总结表格
    | 类型   | 符号/构造  | 有序？| 可变？  | 允许重复? | 主要用途
    | tuple  | (1,2)     | V     | X      | V        | 定结构
    | list   | [1,2]     | V     | V      | V        | 通用序列
    | dict   | {"a":1}   | V(*)  | V      | 键唯一    | 映射关系
    | set    | {1,2}     | X     | V      | X        | 去重、集合运算
* 可变 vs 不可变
    | 不可变类型          | 可变类型
    | int, float, boo    | list
    | str, tuple         | dict
    | frozenset, bytes   | set, bytearray
'''